home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume13 / gmcalc / part12 < prev    next >
Encoding:
Text File  |  1990-06-05  |  57.6 KB  |  1,477 lines

  1. Newsgroups: comp.sources.misc
  2. From: daveg@csvax.caltech.edu (David Gillespie)
  3. Subject: v13i038: Emacs Calculator 1.01, part 12/19
  4. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5.  
  6. Posting-number: Volume 13, Issue 38
  7. Submitted-by: daveg@csvax.caltech.edu (David Gillespie)
  8. Archive-name: gmcalc/part12
  9.  
  10. ---- Cut Here and unpack ----
  11. #!/bin/sh
  12. # this is part 12 of a multipart archive
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file calc.texinfo continued
  15. #
  16. CurArch=12
  17. if test ! -r s2_seq_.tmp
  18. then echo "Please unpack part 1 first!"
  19.      exit 1; fi
  20. ( read Scheck
  21.   if test "$Scheck" != $CurArch
  22.   then echo "Please unpack part $Scheck next!"
  23.        exit 1;
  24.   else exit 0; fi
  25. ) < s2_seq_.tmp || exit 1
  26. echo "x - Continuing file calc.texinfo"
  27. sed 's/^X//' << 'SHAR_EOF' >> calc.texinfo
  28. Xthat have been done.  The Calc Trail buffer uses a variant of Calc Mode,
  29. Xso Calculator commands still work when the trail buffer's window is selected.
  30. XIt is possible to turn the trail window off, but the @samp{*Calc Trail*}
  31. Xbuffer still exists and is updated silently.
  32. X@xref{Trail Commands}.@refill
  33. X
  34. X@kindex M-#
  35. XIn most installations, the @kbd{M-#} (Meta-Shift-3) keystroke is a more
  36. Xconvenient way to start the Calculator.  If you don't have a Meta key,
  37. Xpress @key{ESC}, then @kbd{#}.
  38. X
  39. X@kindex x
  40. X@kindex M-x
  41. X@pindex calc-execute-extended-command
  42. XMost Calc commands use one or two keystrokes.  Lower- and upper-case
  43. Xletters are distinct.  Commands may also be entered in @kbd{M-x} form;
  44. Xfor some commands this is the only form.  As a convenience, the @kbd{x}
  45. Xkey (@code{calc-execute-extended-command})
  46. Xis like @kbd{M-x} except that it enters the initial string @samp{calc-}
  47. Xfor you.  For example, the following key sequences are equivalent:
  48. X@kbd{S}, @kbd{M-x calc-sin @key{RET}}, @kbd{x sin @key{RET}}.@refill
  49. X
  50. X@cindex Extensions module
  51. X@cindex calc-ext module
  52. XThe Calculator exists in two parts.  When you type @kbd{M-x calc}, the
  53. XEmacs ``auto-load'' mechanism will bring in only the first part, which
  54. Xcontains the basic arithmetic functions.  The second half will be
  55. Xauto-loaded the first time you use a more advanced command like a trig
  56. Xfunction or matrix operation.  This is done to improve the response time
  57. Xof the Calculator in the common case when all you need to do is a
  58. Xlittle arithmetic.  If for some reason the Calculator fails to load the
  59. Xextensions module automatically, you can force it to load the extensions
  60. Xby pressing @kbd{x}, or by using the @kbd{m x} command.
  61. X@xref{Mode Settings}.@refill
  62. X
  63. XIf you type @kbd{M-x calc} or @kbd{M-#} with any numeric prefix argument,
  64. Xthe Calculator is loaded if necessary, but it is not actually started.
  65. XIf the argument is positive, the extensions are also loaded if necessary.
  66. XUser-written Lisp code that wishes to make use of Calc's arithmetic
  67. Xroutines can use @samp{(calc 0)} or @samp{(calc 1)} to auto-load the
  68. XCalculator.  (Also, @pxref{Grabbing From Buffers}.)@refill
  69. X
  70. X@kindex ?
  71. X@kindex h
  72. X@kindex i
  73. X@pindex calc-help
  74. X@pindex calc-info
  75. X@cindex Help commands
  76. XThe @kbd{?} key (@code{calc-help}) displays a series of brief help messages.
  77. XSome keys (such as @kbd{b} and @kbd{d}) are prefix keys, like Emacs'
  78. X@key{ESC} and @kbd{C-x} prefixes.  You can type
  79. X@kbd{?} after a prefix to see a list of commands beginning with that
  80. Xprefix.  (If the message includes @samp{[MORE]}, press @kbd{?} again
  81. Xto see additional commands for that prefix.)  Also, @kbd{h}
  82. X(@code{describe-mode}) calls up more complete help
  83. Xinformation on the Calculator in another window, and
  84. X@kbd{i} (@code{calc-info}) runs the Emacs Info system to read this
  85. Xmanual on-line.@refill
  86. X
  87. X@kindex q
  88. X@pindex calc-quit
  89. X@cindex Quitting the Calculator
  90. X@cindex Exiting the Calculator
  91. XThe @kbd{q} key (@code{calc-quit}) exits Calc Mode and closes the
  92. XCalculator's window(s).  It does not delete the Calculator buffers.
  93. XIf you type @kbd{M-x calc} again, the Calculator will reappear with the
  94. Xcontents of the stack intact.  Typing @kbd{M-#} or @kbd{M-x calc} from
  95. Xinside the Calculator buffer is equivalent to executing @code{calc-quit};
  96. Xyou can think of @kbd{M-#} as toggling the Calculator on and off.@refill
  97. X
  98. X@kindex d ~
  99. X@pindex calc-refresh
  100. X@kindex d `
  101. X@pindex calc-realign
  102. X@cindex Refreshing a garbled display
  103. X@cindex Garbled displays, refreshing
  104. XThe @kbd{d ~} key sequence (@code{calc-refresh}) redraws the contents of
  105. Xthe Calculator buffer from memory.  Use this if the contents of the
  106. Xbuffer have been damaged somehow.  The @kbd{o} key and @kbd{d `} key
  107. X(@code{calc-realign}) move the cursor back to its ``home'' position at
  108. Xthe bottom of the Calculator buffer.@refill
  109. X
  110. X@kindex <
  111. X@pindex calc-scroll-left
  112. X@kindex >
  113. X@pindex calc-scroll-right
  114. X@cindex Horizontal scrolling
  115. X@cindex Scrolling horizontally
  116. X@cindex Wide text, scrolling
  117. XThe @kbd{<} and @kbd{>} keys are bound to @code{calc-scroll-left} and
  118. X@code{calc-scroll-right}.  These are just like the normal horizontal
  119. Xscrolling commands except that they scroll one half-screen at a time by
  120. Xdefault.  (Calc formats its output to fit within the bounds of the
  121. Xwindow whenever it can.)@refill
  122. X
  123. X@menu
  124. X* Stack Basics::
  125. X* Numeric Entry::
  126. X* Algebraic Entry::
  127. X* Quick Calculator::
  128. X* Prefix Arguments::
  129. X* Undo::
  130. X* Error Messages::
  131. X* Multiple Calculators::
  132. X* Troubleshooting Commands::
  133. X@end menu
  134. X
  135. X@comment
  136. X@comment  --- Note that TeX order differs from Info order here! ---
  137. X@node Quick Overview, Tutorial, Top, Top
  138. X@section Quick Overview
  139. X
  140. X@cindex Quick overview
  141. X@cindex Overview
  142. XType @kbd{M-x calc} or @kbd{M-#} to start the Calculator; type @kbd{q} to quit.
  143. XType @kbd{M-x quick-calc} to do one quick calculation in the minibuffer.
  144. X
  145. XCalc normally uses RPN notation.  @xref{Stack Basics}, for a discussion
  146. Xof RPN for the beginner.  The @kbd{RET} or @kbd{SPC} key enters a number
  147. Xor duplicates the top number on the stack, @kbd{DEL} removes the top
  148. Xnumber from the stack, and @kbd{TAB} swaps the top two numbers.@refill
  149. X
  150. XYou can enter a formula in familiar ``algebraic'' form (as in @samp{1+2*3})
  151. Xby pressing the apostrophe key.  If you find yourself always using the
  152. Xapostrophe, press the two-key sequence @kbd{m a} so that the numeric,
  153. X@kbd{(}, and @kbd{[} keys will automatically begin algebraic entry.  In
  154. Xa formula, @samp{$} represents the previously computed result.@refill
  155. X
  156. XThe basic arithmetic operations are @kbd{+}, @kbd{-}, @kbd{*}, @kbd{/},
  157. X@kbd{^} (raise to a power), @kbd{%} (modulo), @kbd{&} (reciprocal),
  158. Xand @kbd{n} (change sign).@refill
  159. X
  160. XMathematical functions include @kbd{Q} (square root), @kbd{S} (sine),
  161. X@kbd{C} (cosine), @kbd{T} (tangent), @kbd{E} (exponential), and @kbd{L}
  162. X(natural logarithm).  The @kbd{I} (inverse) and @kbd{H} (hyperbolic)
  163. Xprefix keys may be used with these commands.  These are all shifted
  164. Xletter keys.@refill
  165. X
  166. XPress @kbd{U} to undo the effect of the previous Calculator command.
  167. X
  168. XThe Calculator can operate on integers, rational numbers (fractions), or
  169. Xfloating-point numbers.  Dividing two integers produces a floating-point
  170. Xapproximation; press @kbd{m f} to enable a mode where dividing integers
  171. Xproduces fractions instead.@refill
  172. X
  173. XThe notation @samp{(a,b)} stands for the complex number @samp{a+bi}.
  174. XThe notation @samp{(r;theta)} stands for a complex number in polar form.
  175. XThe notation @samp{a+/-b} stands for @samp{a} with standard deviation @samp{b}.
  176. XThe notation @samp{a mod M} stands for @samp{a} which is taken modulo @samp{M}.
  177. XThe notation @samp{h@@ m' s"} stands for a value in hours, minutes, and seconds.
  178. XThe notation @samp{[lo..hi)} stands for the interval @samp{lo <= x < hi}.
  179. XThe notation @samp{[a,b,c]} stands for a vector of three values.
  180. XThe notation @samp{[[a,b,c],[d,e,f]]} stands for a 2-by-3 matrix.
  181. XMatrices can also be entered in the form @samp{[a,b,c;d,e,f]}.
  182. X
  183. XIntegers and fractions are computed to arbitrary size.  Floating-point
  184. Xnumbers are computed to the current precision, which may be arbitrarily
  185. Xlarge.  Press @kbd{p} to set the current precision.
  186. X
  187. XErroneous calculations such as dividing 1 by 0 simply leave an
  188. Xunsimplified formula (like @samp{1 / 0}) on the stack.  If the
  189. XCalculator leaves a formula unsimplified, press @kbd{w} to see why.
  190. XPress @kbd{d w} to enable a mode where this happens automatically.
  191. X
  192. XPress @kbd{?} for a brief summary of Calculator commands.  Press @kbd{?}
  193. Xrepeatedly to cycle among the lines of the summary.
  194. X
  195. XPress @kbd{d ?} for a list of commands for changing the display format.
  196. XFor example, @kbd{d f} sets fixed-point notation.  (After you type @kbd{?}
  197. Xthe Calculator is still waiting for a key to complete the @samp{d} sequence;
  198. Xtype @kbd{C-g} to cancel the prefix.)
  199. X
  200. XPress @kbd{m ?} for a list of other mode-setting commands.  Press @kbd{m m}
  201. Xto save all current mode settings in your @file{.emacs} file.
  202. X
  203. XPress @kbd{c ?} for a list of commands for numeric conversions, such as
  204. Xdegrees-to-radians and back.
  205. X
  206. XPress @kbd{b ?} for a list of binary-arithmetic commands.  (Press @kbd{d 2}
  207. Xor @kbd{d 0} to switch between binary and decimal display of integers.)
  208. XPress @kbd{b w} to see or change the current word size for binary operations.
  209. X
  210. XPress @kbd{a ?} for a list of commands for manipulating algebraic formulas.
  211. X
  212. XPress @kbd{v ?} for a list of commands for manipulating vectors and
  213. Xmatrices.
  214. X
  215. XPress @kbd{k ?} for a list of commands related to number theory and
  216. Xcombinatorial analysis.
  217. X
  218. XPress @kbd{t ?} for a list of commands for manipulating the trail.
  219. X
  220. XPress @kbd{Z ?} for a list of commands for defining your own commands.
  221. XPress @kbd{z ?} for a list of commands you have defined.
  222. X
  223. XPress @kbd{s} to store a number in a variable.  Variable names are single
  224. Xdigits or whole words.  Press @kbd{r} to recall a value from a variable.
  225. X
  226. XPress @kbd{y} to copy the top number on the stack into the most recently
  227. Xused editing buffer.  Use @kbd{M-x calc-grab-region} or @kbd{C-u - M-#}
  228. Xin an editing buffer to transfer a region of data to the Calculator stack.
  229. X
  230. X@node Tutorial, Introduction, Quick Overview, Top
  231. X@chapter Tutorial
  232. X
  233. XThis chapter explains how to use Calc and its many features, in
  234. Xa step-by-step, tutorial way.  You are encouraged to run Calc and
  235. Xwork along with the examples as you read.  If you are already
  236. Xfamiliar with advanced calculators, you may wish to skip on to the
  237. Xrest of this manual.
  238. X
  239. XThe easiest way to read the tutorial on-line is to have two windows on
  240. Xyour Emacs screen, one with Calc and one with the Info system.  (If you
  241. Xhave a printed copy of the manual you can use that instead.)  The
  242. X@kbd{C-x o} command switches among the windows on the screen.  You may
  243. Xfind it convenient to turn the Calc Trail display off so that there are
  244. Xonly two windows on the screen.  Type the two-letter sequence @kbd{t d}
  245. Xto turn the trail on and off.  (You may have to wait a few seconds
  246. Xwhile Calc loads its ``extended commands'' package to do this.)
  247. X
  248. XThis tutorial is designed to be done in sequence.  But the rest of this
  249. Xmanual does not assume you have gone through the tutorial.  The tutorial
  250. Xdoes not cover everything in the Calculator, but it touches on most
  251. Xgeneral areas.
  252. X
  253. X@menu
  254. X* Basic Tutorial::
  255. X* Arithmetic Tutorial::
  256. X* Vector/Matrix Tutorial::
  257. X* Types Tutorial::
  258. X* Algebra Tutorial::
  259. X* Programming Tutorial::
  260. X@end menu
  261. X
  262. X@node Basic Tutorial, Arithmetic Tutorial, Tutorial, Tutorial
  263. X@section Basic Tutorial
  264. X
  265. XIn this section, we learn how to turn the Calculator on and off, how
  266. XRPN and algebraic-style calculations work, and how to undo and redo
  267. Xan operation made by mistake.
  268. X
  269. X@menu
  270. X* On and Off Tutorial::     Turning Calc on and off.
  271. X* RPN Tutorial::            Basic operations with the stack.
  272. X* Algebraic Tutorial::      Algebraic entry; variables.
  273. X* Undo Tutorial::           If you make a mistake: Undo and the trail.
  274. X* Modes Tutorial::          Common mode-setting commands.
  275. X@end menu
  276. X
  277. X@node On and Off Tutorial, RPN Tutorial, Basic Tutorial, Basic Tutorial
  278. X@subsection Turning the Calculator On and Off
  279. X
  280. XIn most installations, you can type @kbd{M-#} to start the Calculator.
  281. XThe notation @kbd{M-#} is short for @kbd{@key{META}-#}.  On most
  282. Xkeyboards this means holding down the @key{META} (or @key{ALT}) and
  283. X@key{SHIFT} keys while typing @kbd{3}.  If you don't have a @key{META}
  284. Xkey on your keyboard, you can type @key{ESC} first, then @kbd{#}, to
  285. Xaccomplish the same effect.  If you don't even have an @key{ESC} key,
  286. Xyou can hold down @key{CTRL} or @key{CONTROL} while typing a left square
  287. Xbracket, denoted here by @kbd{C-[}.@refill
  288. X
  289. XIf @kbd{M-#} doesn't work for you, you can always type @kbd{M-x calc}.
  290. XFirst type @kbd{M-x} (@key{META} with the letter @kbd{x}), then, at
  291. Xthe prompt, type @kbd{calc} and press Return.  (In Emacs documentation,
  292. Xthe return key is shown as @key{RET}, and is usually omitted for the
  293. Xsake of brevity on commands like @kbd{M-x}.)
  294. X
  295. XIf you type @kbd{M-x calc} and Emacs doesn't recognize the command
  296. X(it will say @samp{[No match]} when you try to press @key{RET}),
  297. Xthen Calc has not been fully installed and you will have to load it
  298. Xby hand.  Use @kbd{M-x load-file}, then type @samp{calc} when it
  299. Xasks you for the file name to load.  Then, you can use @kbd{M-#} to
  300. Xstart the Calculator.
  301. X
  302. XWhen you turn the Calculator on, your Emacs window should split into
  303. Xtwo, the upper one showing whatever you were editing at the time,
  304. Xand the lower one displaying the Calculator.  The lower part is
  305. Xactually two windows side-by-side.  The lefthand one is called
  306. Xthe @dfn{stack window} and the righthand one is called the
  307. X@dfn{trail window.}  The Stack holds the numbers involved in the
  308. Xcalculation you are currently performing.  The Trail holds a complete
  309. Xrecord of all calculations you have done.  In a desk calculator with
  310. Xa printer, the Trail corresponds to the paper tape that records what
  311. Xyou do.
  312. X
  313. XMost Calculator commands deal explicitly with the Stack only, but
  314. Xthere is a set of commands that allow you to search back through
  315. Xthe Trail and retreive any previous result.
  316. X
  317. XTo turn the Calculator off, just press @kbd{M-#} again.  You can
  318. Xalso press @kbd{q} for ``quit'' with the same effect.  When you
  319. Xquit, the Calculator windows go away but the actual Stack and Trail
  320. Xare not gone, just hidden.  When you press @kbd{M-#} once again
  321. Xyou will get the same Stack and Trail contents you had when you
  322. Xlast used the Calculator.
  323. X
  324. XThe Calculator does not remember its state between Emacs sessions.
  325. XThus if you quit Emacs and start it again, @kbd{M-#} will give you
  326. Xa fresh Stack and Trail.
  327. X
  328. X@node RPN Tutorial, Algebraic Tutorial, On and Off Tutorial, Basic Tutorial
  329. X@subsection RPN Calculations and the Stack
  330. X
  331. X@cindex RPN notation
  332. XCalc normally uses RPN notation.  You may be familiar with the RPN
  333. Xsystem from HP calculators, FORTH, or PostScript.  The central component
  334. Xof an RPN calculator is the @dfn{stack}.  A calculator stack is like a
  335. Xstack of dishes.  New dishes (numbers) are added at the top of the
  336. Xstack, and numbers are normally only removed from the top of the
  337. Xstack.@refill
  338. X
  339. XIn an operation like @samp{2+3}, the 2 and 3 are called the @dfn{operands}
  340. Xand the @samp{+} is the @dfn{operator}.  In an RPN calculator you always
  341. Xenter the operands first, then the operator.  Each time you type a
  342. Xnumber, Calc adds or @dfn{pushes} it onto the top of the Stack.
  343. XWhen you press an operator key like @kbd{+}, Calc pops the appropriate
  344. Xnumber of operands from the stack and pushes back the result.
  345. X
  346. XThus we could add the numbers 2 and 3 in an RPN calculator by typing the
  347. Xkeys: @kbd{1 @key{RET} 2 @key{RET} +}.  (@key{RET} corresponds to the
  348. X@key{ENTER} key on traditional RPN calculators.)  The first four
  349. Xkeystrokes ``push'' the numbers 2 and 3 onto the stack.  The @kbd{+} key
  350. X``pops'' the top two numbers from the stack, adds them, and pushes the
  351. Xresult (5) back onto the stack.  Here's how the stack will look at
  352. Xvarious points throughout the calculation:
  353. X
  354. X@group
  355. X@example
  356. X    .          1:  2          2:  2          1:  5              .
  357. X                   .          1:  3              .
  358. X                                  .
  359. X
  360. X   M-#           2 RET          3 RET            +             DEL
  361. X@end example
  362. X@end group
  363. X
  364. XThe @samp{.} symbol is a marker that represents the top of the stack.
  365. XNote that the ``top'' of the stack is really shown at the bottom of
  366. Xthe Stack window.  This may seem backwards, but it turns out to be
  367. Xless distracting in regular use.
  368. X
  369. XThe numbers @samp{1:} and @samp{2:} on the left are @dfn{stack level
  370. Xnumbers}.  Old RPN calculators always had four stack levels called
  371. X@code{x}, @code{y}, @code{z}, and @code{t}.  Calc's stack can grow
  372. Xas large as you like, so it uses numbers instead of letters.  Some
  373. Xstack-manipulation commands accept a numeric argument which says
  374. Xwhich stack level to work on.  Normal commands like @kbd{+} always
  375. Xwork on the top few levels of the stack.
  376. X
  377. XThe Stack buffer is just an Emacs buffer, and you can move around in
  378. Xit using the regular Emacs motion commands.  But no matter where the
  379. Xcursor is, and even if you have scrolled the @samp{.} marker out of
  380. Xview, Calc commands always move the cursor back down to level 1
  381. Xbefore doing anything.  It is possible to move the @samp{.} marker
  382. Xupwards through the stack, temporarily ``hiding'' some numbers from
  383. Xcommands like @kbd{+}.  This is called @dfn{stack truncation} and
  384. Xwe will not cover it in this tutorial; @pxref{Truncating the Stack},
  385. Xif you are interested.
  386. X
  387. XYou don't really need the second @key{RET} in @kbd{2 @key{RET} 3
  388. X@key{RET} +}.  That's because if you type any operator name or
  389. Xother non-numeric key when you are entering a number, the Calculator
  390. Xautomatically enters that number and then does the requested command.
  391. XThus @kbd{2 @key{RET} 3 +} will work just as well.@refill
  392. X
  393. XThe @key{DEL} key is called Backspace on some keyboards.  It is
  394. Xwhatever key you would use to correct a simple typing error when
  395. Xregularly using Emacs.  The @key{DEL} key pops and throws away the
  396. Xtop value on the stack.  (You can still get that value back from
  397. Xthe Trail if you should need it later on.)
  398. X
  399. XSince the @kbd{-} key is also an operator (it subtracts the top two
  400. Xstack elements), how does one enter a negative number?  Calc uses
  401. Xthe @kbd{_} (underscore) key to act like the minus sign in a number.
  402. XSo, typing @kbd{-5 @key{RET}} won't work because the @kbd{-} key
  403. Xwill try to do a subtraction, but @kbd{_5 @key{RET}} works just fine.
  404. X
  405. XYou can also press @kbd{n}, which means ``change sign.''  It changes
  406. Xthe number at the top of the stack (or the number being entered)
  407. Xfrom positive to negative or vice-versa.
  408. X
  409. XIf you press @key{RET} when you're not entering a number, the effect
  410. Xis to duplicate the top number on the stack.  Consider this calculation:
  411. X
  412. X@group
  413. X@example
  414. X1:  3          2:  3          1:  9          2:  9          1:  81
  415. X    .          1:  3              .          1:  9              .
  416. X                   .                             .          
  417. X
  418. X  3 RET           RET             *             RET             *
  419. X@end example
  420. X@end group
  421. X
  422. X(Of course, an easier way to do this would be @kbd{3 @key{RET} 4 ^},
  423. Xto raise 3 to the fourth power.)
  424. X
  425. XThe space-bar key (denoted @key{SPC} here) performs the same function
  426. Xas @key{RET}; you could replace all three occurrences of @key{RET} in
  427. Xthe above example with @key{SPC} and the effect would be the same.
  428. X
  429. XAnother stack manipulation key is @key{TAB}.  This exchanges the top
  430. Xtwo stack entries.  Suppose you have computed @kbd{2 @key{RET} 3 +}
  431. Xto get 5, and then you realize what you really wanted to compute
  432. Xwas @samp{20 / (2+3)}.
  433. X
  434. X@group
  435. X@example
  436. X1:  5          2:  5          2:  20         1:  4
  437. X    .          1:  20         1:  5              .
  438. X                   .              .
  439. X
  440. X 2 RET 3 +         20            TAB             /
  441. X@end example
  442. X@end group
  443. X
  444. XPlanning ahead, the calculation would have gone like this:
  445. X
  446. X@group
  447. X@example
  448. X1:  20         2:  20         3:  20         2:  20         1:  4
  449. X    .          1:  2          2:  2          1:  5              .
  450. X                   .          1:  3              .
  451. X                                  .
  452. X
  453. X  20 RET         2 RET            3              +              /
  454. X@end example
  455. X@end group
  456. X
  457. XA related stack command is @kbd{M-@key{TAB}} (hold @key{META} and type
  458. X@key{TAB}).  It rotates the top three elements of the stack upward,
  459. Xbringing the object in level 3 to the top.
  460. X
  461. X@group
  462. X@example
  463. X1:  10         2:  10         3:  10         3:  20         3:  30
  464. X    .          1:  20         2:  20         2:  30         2:  10
  465. X                   .          1:  30         1:  10         1:  20
  466. X                                  .              .              .
  467. X
  468. X  10 RET         20 RET         30 RET         M-TAB          M-TAB
  469. X@end example
  470. X@end group
  471. X
  472. XOperations like @kbd{+}, @kbd{-}, @kbd{*}, @kbd{/}, and @kbd{^} pop two
  473. Xarguments from the stack and push a result.  Operations like @kbd{n} and
  474. X@kbd{Q} (square root) pop a single number and push the result.  You can
  475. Xthink of them as simply operating on the top element of the stack.
  476. X
  477. X@group
  478. X@example
  479. X1:  3          1:  9          2:  9          1:  25         1:  5
  480. X    .              .          1:  16             .              .
  481. X                                  .
  482. X
  483. X  3 RET          RET *        4 RET RET *        +              Q
  484. X@end example
  485. X@end group
  486. X
  487. XHere we use the Pythagorean Theorem to determine the hypotenuse of a
  488. Xright triangle.  Calc actually has a built-in command for that, but
  489. Xit isn't on any key.  Thus you must enter it using @kbd{M-x} notation:
  490. X
  491. X@group
  492. X@example
  493. X1:  3          2:  3          1:  5
  494. X    .          1:  4              .
  495. X                   .
  496. X
  497. X  3 RET          4 RET      M-x calc-hypot
  498. X@end example
  499. X@end group
  500. X
  501. XAll Calculator commands begin with the word @samp{calc-}.  Since it
  502. Xgets tiring to type this, Calc provides an @kbd{x} key which is just
  503. Xlike the regular Emacs @kbd{M-x} key except it provides the @samp{calc-}
  504. Xprefix for you:
  505. X
  506. X@group
  507. X@example
  508. X1:  3          2:  3          1:  5
  509. X    .          1:  4              .
  510. X                   .
  511. X
  512. X  3 RET          4 RET         x hypot
  513. X@end example
  514. X@end group
  515. X
  516. XWhat happens if you take the square root of a negative number?
  517. X
  518. X@group
  519. X@example
  520. X1:  4          1:  -4         1:  (0, 2)
  521. X    .              .              .
  522. X                   .
  523. X
  524. X  4 RET            n              Q
  525. X@end example
  526. X@end group
  527. X
  528. XThe notation @samp{(@var{re}, @var{im})} represents a complex number.
  529. XComplex numbers are more traditionally written @samp{@var{re} + @var{im}i};
  530. XCalc can display in this format, too, but for now we'll stick to the
  531. X@samp{(@var{re}, @var{im})} notation.
  532. X
  533. XIf you don't know how complex numbers work, you can safely ignore this
  534. Xfeature.  Complex numbers only arise from operations that would be
  535. Xerrors in a calculator that didn't have complex numbers.  (For example,
  536. Xtaking the square root or logarithm of a negative number produces a
  537. Xcomplex result.)
  538. X
  539. XComplex numbers are entered in the notation shown.  The @kbd{(} and
  540. X@kbd{,} and @kbd{)} keys manipulate ``incomplete complex numbers.''
  541. X
  542. X@group
  543. X@example
  544. X1:  ( ...      2:  ( ...      1:  ( 2, ...   1:  ( 2, ...   1:  (2, 3)
  545. X    .          1:  2              .              3              .
  546. X                                                 .
  547. X
  548. X    (              2              ,              3              )
  549. X@end example
  550. X@end group
  551. X
  552. XYou can perform calculations while entering parts of incomplete objects.
  553. XHowever, an incomplete object cannot actually be involved in a calculation:
  554. X
  555. X@group
  556. X@example
  557. X1:  ( ...      2:  ( ...      3:  ( ...      1:  ( ...      1:  ( ...
  558. X    .          1:  2          2:  2              5              5
  559. X                              1:  3              .              .
  560. X                                  .
  561. X                                                             (error)
  562. X    (             2 RET           3              +              +
  563. X@end example
  564. X@end group
  565. X
  566. XAdding 5 to an incomplete object makes no sense, so the last command
  567. Xproduces an error message and leaves the stack the same.
  568. X
  569. XIncomplete objects can't participate in arithmetic, but they can be
  570. Xmoved around by the regular stack commands.
  571. X
  572. X@group
  573. X@example
  574. X2:  2          3:  2          3:  3          1:  ( ...      1:  (2, 3)
  575. X1:  3          2:  3          2:  ( ...          2              .
  576. X    .          1:  ( ...      1:  2              3
  577. X                   .              .              .
  578. X
  579. X2 RET 3 RET        (            M-TAB          M-TAB            )
  580. X@end example
  581. X@end group
  582. X
  583. XNote that the @kbd{,} (comma) key did not have to be used here.
  584. XWhen you press @kbd{)} all the stack entries between the incomplete
  585. Xentry and the top are collected, so there's never really a reason
  586. Xto use @kbd{,}.  It's up to you.
  587. X
  588. XVectors are entered the same way as complex numbers, but with square
  589. Xbrackets in place of parentheses.  We'll meet vectors again later in
  590. Xthe tutorial.
  591. X
  592. XAny Emacs command can be given a @dfn{numeric prefix argument} by
  593. Xtyping a series of @key{META}-digits beforehand.  If @key{META} is
  594. Xawkward for you, you can instead type @kbd{C-u} followed by the
  595. Xnecessary digits.  Numeric prefix arguments can be negative, as in
  596. X@kbd{M-- M-3 M-5} or @kbd{C-u - 3 5}.  Calc commands use numeric
  597. Xprefix arguments in a variety of ways.  For example, a numeric prefix
  598. Xon the @kbd{+} operator adds any number of stack entries at once:
  599. X
  600. X@group
  601. X@example
  602. X1:  10         2:  10         3:  10         3:  10         1:  60
  603. X    .          1:  20         2:  20         2:  20             .
  604. X                   .          1:  30         1:  30
  605. X                                  .              .
  606. X
  607. X  10 RET         20 RET         30 RET         C-u 3            +
  608. X@end example
  609. X@end group
  610. X
  611. XFor stack manipulation commands, a positive numeric prefix argument
  612. Xoperates on the top @var{n} stack entries at once.  A negative
  613. Xargument operates on the entry in level @var{n} only.  An argument
  614. Xof zero operates on the entire stack.  In this example, we copy
  615. Xthe second-to-top element of the stack:
  616. X
  617. X@group
  618. X@example
  619. X1:  10         2:  10         3:  10         3:  10         4:  10
  620. X    .          1:  20         2:  20         2:  20         3:  20
  621. X                   .          1:  30         1:  30         2:  30
  622. X                                  .              .          1:  20
  623. X                                                                .
  624. X
  625. X  10 RET         20 RET         30 RET         C-u -2          RET
  626. X@end example
  627. X@end group
  628. X
  629. XAnother common idiom is @kbd{M-0 DEL}, which clears the stack.
  630. X(The @kbd{M-0} numeric prefix tells @key{DEL} to operate on the
  631. Xentire stack.)
  632. X
  633. X@node Algebraic Tutorial, Undo Tutorial, RPN Tutorial, Basic Tutorial
  634. X@subsection Algebraic-Style Calculations
  635. X
  636. XIf you are not used to RPN notation, you may prefer to operate the
  637. XCalculator in ``algebraic mode,'' which is closer to the way
  638. Xnon-RPN calculators work.  In algebraic mode, you enter formulas
  639. Xin traditional @samp{2+3} notation.
  640. X
  641. XYou don't really need any special ``mode'' to enter algebraic formulas.
  642. XYou can enter a formula at any time by pressing the apostrophe (@kbd{'})
  643. Xkey.  Answer the prompt with the desired formula, then press @key{RET}.
  644. XThe formula is evaluated and the result is pushed onto the RPN stack.
  645. XIf you don't want to think in RPN at all, you can enter your whole
  646. Xcomputation as a formula, read the result from the stack, then press
  647. X@key{DEL} to delete it from the stack.
  648. X
  649. XTry pressing the apostrophe key, then @kbd{2+3+4}, then @key{RET}.
  650. XThe result should be the number 9.
  651. X
  652. XAlgebraic formulas use the operators @samp{+}, @samp{-}, @samp{*},
  653. X@samp{/}, and @samp{^}.  You can use parentheses to make the order
  654. Xof evaluation clear.  In the absence of parentheses, @samp{^} is
  655. Xevaluated first, then @samp{*}, then @samp{/}, then finally
  656. X@samp{+} and @samp{-}.  For example, the expression
  657. X
  658. X@example
  659. X2 + 3*4*5 / 6*7^8 - 9
  660. X@end example
  661. X
  662. X@noindent
  663. Xis equivalent to
  664. X
  665. X@example
  666. X2 + ((3*4*5) / (6*(7^8)) - 9
  667. X@end example
  668. X
  669. X@noindent
  670. Xor, in large mathematical notation,
  671. X
  672. X@group
  673. X@example
  674. X    3 * 4 * 5
  675. X2 + --------- - 9
  676. X          8
  677. X     6 * 7
  678. X@end example
  679. X@end group
  680. X
  681. XThe result of this expression will be the number @samp{-6.99999826533}.
  682. X
  683. XCalc's order of evaluation is the same as for most computer languages,
  684. Xexcept that @samp{*} binds more strongly than @samp{/}, as the above
  685. Xexample shows.
  686. X
  687. XOperators at the same level are evaluated from left to right, except
  688. Xthat @samp{^} is evaluated from right to left.  Thus, @samp{2-3-4} is
  689. Xequivalent to @samp{(2-3)-4} or -5, whereas @samp{2^3^4} is equivalent
  690. Xto @samp{2^(3^4)} (a very large integer; try it!).
  691. X
  692. XIf you tire of typing the apostrophe all the time, there is an
  693. X``algebraic mode'' you can select in which Calc automatically senses
  694. Xwhen you are about to type an algebraic expression.  To enter this
  695. Xmode, press the two letters @kbd{m a}.  (An @samp{Alg} indicator
  696. Xshould appear in the Calc window's mode line.)
  697. X
  698. XPress @kbd{m a}, then @kbd{2+3+4} with no apostrophe, then @key{RET}.
  699. X
  700. XIn algebraic mode, when you press any key that would normally begin
  701. Xentering a number (such as a digit, a decimal point, or the @kbd{_}
  702. Xkey), or if you press @kbd{(} or @kbd{[}, Calc automatically begins
  703. Xan algebraic entry.
  704. X
  705. XFunctions which do not have operator symbols like @samp{+} and @samp{*}
  706. Xmust be entered in formulas using function-call notation.  For example,
  707. Xthe function name corresponding to the square-root key @kbd{Q} is
  708. X@code{sqrt}.  To compute a square root in a formula, you would use
  709. Xthe notation @samp{sqrt(@var{x})}.
  710. X
  711. XPress the apostrophe, then @kbd{sqrt(5*2) - 3}.  The result should
  712. Xbe @samp{0.16227766017}.
  713. X
  714. XNote that if the formula begins with a function name, you need to use
  715. Xthe apostrophe even if you are in algebraic mode.  If you type @kbd{sqrt}
  716. Xout of the blue, the @kbd{s} will be taken as a Store command, and
  717. Xthe @kbd{qrt} will be taken as the name of the variable to store!
  718. X
  719. XSome people prefer to enter complex numbers and vectors in algebraic
  720. Xform because they find RPN entry with incomplete objects to be too
  721. Xdistracting, even if they otherwise use Calc as an RPN calculator.
  722. X
  723. XStill in algebraic mode, type:
  724. X
  725. X@group
  726. X@example
  727. X1:  (2, 3)     2:  (2, 3)     1:  (8, -1)    2:  (8, -1)    1:  (9, -1)
  728. X    .          1:  (1, -2)        .          1:  1              .
  729. X                   .                             .          
  730. X                                                            
  731. X (2,3) RET      (1,-2) RET        *              1 RET          +
  732. X@end example
  733. X@end group
  734. X
  735. XAlgebraic mode allows us to enter complex numbers without pressing
  736. Xan apostrophe first, but it also means we need to press @key{RET}
  737. Xafter every entry, even for a simple number like @samp{1}.
  738. X
  739. XPress @kbd{m a} again to leave algebraic mode.
  740. X
  741. XActual non-RPN calculators use a mixture of algebraic and RPN styles.
  742. XIn general, operators of two numbers (like @kbd{+} and @kbd{*})
  743. Xuse algebraic form, but operators of one number (like @kbd{n} and @kbd{Q})
  744. Xuse RPN form.  Also, a non-RPN calculator allows you to see the
  745. Xintermediate results of a calculation as you go along.  You can
  746. Xaccomplish this in Calc by performing your calculation as a series
  747. Xof algebraic entries, using the @kbd{$} sign to tie them together.
  748. XIn an algebraic formula, @kbd{$} represents the number on the top
  749. Xof the stack.  Here, we perform the calculation @samp{sqrt(2*4+1)},
  750. Xwhich on a traditional calculator would be done by pressing
  751. X@kbd{2 * 4 + 1 =} and then the square-root key.
  752. X
  753. X@group
  754. X@example
  755. X1:  8          1:  9          1:  3
  756. X    .              .              .
  757. X
  758. X  ' 2*4 RET        $+1 RET        Q
  759. X@end example
  760. X@end group
  761. X
  762. XNotice that we didn't need to press an apostrophe for the @kbd{$+1},
  763. Xbecause the dollar sign always begins an algebraic entry.
  764. X
  765. XAlgebraic formulas can include @dfn{variables}.  To store in a
  766. Xvariable, press @kbd{s}, then type the variable name, then press
  767. X@key{RET}.  A variable name should consist of one or more letters
  768. Xor digits, beginning with a letter.
  769. X
  770. X@group
  771. X@example
  772. X1:  17             .          1:  a + a^2    1:  306
  773. X    .                             .              .
  774. X
  775. X  17 s a RET      DEL          ' a+a^2 RET       =
  776. X@end example
  777. X@end group
  778. X
  779. XThe @kbd{=} key @dfn{evaluates} a formula by replacing all variables
  780. Xby the values that were stored in them.
  781. X
  782. XFor RPN calculations, you can recall a variable's value on the
  783. Xstack either by entering its name as a formula and pressing @kbd{=},
  784. Xor by using the @kbd{r} command.
  785. X
  786. X@group
  787. X@example
  788. X1:  17         2:  17         3:  17         2:  17         1:  306
  789. X    .          1:  17         2:  17         1:  289            .
  790. X                   .          1:  2              .
  791. X                                  .
  792. X
  793. X   r a RET      ' a RET =         2              ^              +
  794. X@end example
  795. X@end group
  796. X
  797. XIf you press a single digit after @kbd{s} or @kbd{r}, you get one
  798. Xof ten ``quick'' variables.  They are quick simply because you don't
  799. Xhave to press @key{RET} after their names.
  800. X
  801. XAny variables in an algebraic formula for which you have not stored
  802. Xvalues are left alone, even when you evaluate the formula.
  803. X
  804. X@group
  805. X@example
  806. X1:  2 a + 2 b     1:  34 + 2 b
  807. X    .                 .
  808. X
  809. X ' 2a+2b RET          =
  810. X@end example
  811. X@end group
  812. X
  813. XCalls to function names which are undefined in Calc are also left
  814. Xalone, as are calls for which the value is undefined.
  815. X
  816. X@group
  817. X@example
  818. X1:  2. + log10(0) + log10(5, 6) + foo(3)
  819. X    .
  820. X
  821. X ' log10(100) + log10(0) + log10(5,6) + foo(3) RET
  822. X@end example
  823. X@end group
  824. X
  825. XIn this example, the first call to @code{log10} works, but the other
  826. Xcalls are not evaluated.  In the second call, the logarithm is
  827. Xundefined for that value of the argument; in the third, there are
  828. Xtoo many arguments.  In the fourth case, there is no function
  829. Xcalled @code{foo}.
  830. X
  831. XWe will encounter formulas involving variables and functions again
  832. Xwhen we discuss the algebra and calculus features of the Calculator.
  833. X
  834. X@node Undo Tutorial, Modes Tutorial, Algebraic Tutorial, Basic Tutorial
  835. X@subsection Undo and Redo
  836. X
  837. XIf you make a mistake, you can usually correct it by pressing shift-@kbd{U},
  838. Xthe ``undo'' command.  First, to get a clean slate, press @kbd{M-0 DEL}
  839. Xto clear the stack, then @kbd{M-# M-#} to stop and start the Calculator
  840. Xover.  Now:
  841. X
  842. X@group
  843. X@example
  844. X1:  2          2:  2          1:  8          2:  2          1:  6
  845. X    .          1:  3              .          1:  3              .
  846. X                   .                             .
  847. X
  848. X   2 RET           3              ^              U              *
  849. X@end example
  850. X@end group
  851. X
  852. XYou can undo any number of times.  Calc keeps a complete record of
  853. Xall you have done since you last pressed @kbd{M-#}.  After the
  854. Xabove example, you could type:
  855. X
  856. X@group
  857. X@example
  858. X1:  6          2:  2          1:  2              .              .
  859. X    .          1:  3              .
  860. X                   .
  861. X                                                             (error)
  862. X                   U              U              U              U
  863. X@end example
  864. X@end group
  865. X
  866. XYou can also type @kbd{D} to ``redo'' a command that you have undone
  867. Xmistakenly.
  868. X
  869. X@group
  870. X@example
  871. X    .          1:  2          2:  2          1:  6          1:  6
  872. X                   .          1:  3              .              .
  873. X                                  .
  874. X                                                             (error)
  875. X                   D              D              D              D
  876. X@end example
  877. X@end group
  878. X
  879. XWe are unable to redo past the @samp{6}, since that was placed there
  880. Xby something other than an undo command.
  881. X
  882. XYou can think of undo and redo as a sort of ``time machine.''  Press
  883. X@kbd{U} to go backward in time, @kbd{D} to go forward.  If you go
  884. Xbackward and do something (like @kbd{*}) then, as any science fiction
  885. Xreader knows, you have changed your future and you cannot go forward
  886. Xagain.  Thus, the inability to redo past the @samp{6} even though there
  887. Xwas an earlier undo command.
  888. X
  889. XYou can always recall an earlier result using the Trail.  We've ignored
  890. Xthe trail so far, but it has been faithfully recording everything we
  891. Xdid since we loaded the Calculator.  If the Trail is not displayed,
  892. Xpress @kbd{t d} now to turn it on.
  893. X
  894. XLet's try grabbing an earlier result.  The @samp{8} we computed was
  895. Xundone by a @kbd{U} command, and was lost even to Redo when we pressed
  896. X@kbd{*}, but it's still there in the trail.  There should be a little
  897. X@samp{>} arrow (the @dfn{trail pointer}) resting on the last trail
  898. Xentry.  If there isn't, press @kbd{t ]} to reset the trail pointer.
  899. XNow, press @kbd{t p} to move the arrow onto the line containing
  900. X@samp{8}, and press @kbd{t y} to ``yank'' that number back onto the
  901. Xstack.
  902. X
  903. XIf you press @kbd{t ]}, you will see that even our Yank command went
  904. Xinto the trail.
  905. X
  906. XLet's go further back in time.  Earlier in the tutorial we computed
  907. Xa huge integer using the formula @samp{2^3^4}.  We don't remember
  908. Xwhat it was, but the first digits were ``241''.  Press @kbd{t r}
  909. X(which stands for trail-search-reverse), then type @kbd{241}.
  910. XThe trail cursor will jump back to the next previous occurrence of
  911. Xthe string ``241'' in the trail.  This is just a regular Emacs
  912. Xincremental search; you can now press @kbd{C-s} or @kbd{C-r} to
  913. Xcontinue the search forwards or backwards as you like.
  914. X
  915. XTo finish the search, press @key{ESC} (or @kbd{C-[} if your keyboard
  916. Xdoesn't have @key{ESC}).  This halts the incremental search and
  917. Xleaves the trail pointer at the thing we found.  Now we can type
  918. X@kbd{t y} to yank that number onto the stack.  If we hadn't
  919. Xremembered the ``241'', we could simply have searched for @kbd{2^3^4},
  920. Xthen pressed @kbd{ESC t n} to halt and then move to the next item.
  921. X
  922. XYou may have noticed that all the trail-related commands begin with
  923. Xthe letter @kbd{t}.  Calc has so many commands that there aren't
  924. Xenough keys for all of them, so various commands are grouped into
  925. Xtwo-letter sequences where the first letter is called the @dfn{prefix}
  926. Xkey.  If you type a prefix key by accident, you can press @kbd{C-g}
  927. Xto cancel it.  (In fact, you can press @kbd{C-g} to cancel almost
  928. Xanything in Emacs.)  To get help on a prefix key, press the key
  929. Xfollowed by @kbd{?}.  Some prefixes have several lines of help,
  930. Xso you need to press @kbd{?} repeatedly to see them all.
  931. X
  932. XTry pressing @kbd{t ?} now.  You will see a line of the form,
  933. X
  934. X@example
  935. Xtrail: Display; Fwd, Back; Next, Prev, Here, [, ]; Yank:  [MORE]  t-
  936. X@end example
  937. X
  938. XThe word ``trail'' indicates that the @kbd{t} prefix key contains
  939. Xtrail-related commands.  Each entry on the line shows one command,
  940. Xwith a single capital letter showing which letter you press to get
  941. Xthat command.  We have used @kbd{t n}, @kbd{t p}, @kbd{t ]}, and
  942. X@kbd{t y} so far.  The @samp{[MORE]} means you can press @kbd{?}
  943. Xagain to see more @kbd{t}-prefix comands.  Notice that the commands
  944. Xare roughly divided (by semicolons) into related groups.
  945. X
  946. XWhen you are in the help display for a prefix key, the prefix is
  947. Xstill active.  If you press another key, like @kbd{y} for example,
  948. Xit will be interpreted as a @kbd{t y} command.  If all you wanted
  949. Xwas to look at the help messages, press @kbd{C-g} afterwards to cancel
  950. Xthe prefix.
  951. X
  952. XOne more way to correct an error is by editing the stack entries.
  953. XThe actual Stack buffer is marked read-only and must not be edited
  954. Xdirectly, but you can press @kbd{`} (the backquote or accent grave)
  955. Xto edit a stack entry.
  956. X
  957. XTry entering @samp{3.141439} now.  If this is supposed to represent
  958. X@samp{pi}, it's got several errors.  Press @kbd{`} to edit this number.
  959. XNow use the normal Emacs cursor motion and editing keys to change
  960. Xthe second 4 to a 5, and to transpose the 3 and the 9.  When you
  961. Xpress @key{RET}, the number of the stack will be replaced by your
  962. Xnew number.  This also works for formulas, vectors, and other types
  963. Xof values you can put on the stack.
  964. X
  965. X@node Modes Tutorial, , Undo Tutorial, Basic Tutorial
  966. X@subsection Mode-Setting Commands
  967. X
  968. XCalc has many types of @dfn{modes} that affect the way it interprets
  969. Xyour commands or the way it displays data.  We have already seen one
  970. Xmode, namely algebraic mode.  There are many others, too; we'll
  971. Xtry some of the most common ones here.
  972. X
  973. XPerhaps the most fundamental mode in Calc is the current @dfn{precision}.
  974. XNotice the @samp{12} on the Calc window's mode line:
  975. X
  976. X@example
  977. X--%%-Calc: 12 Deg       (Calculator)----All------
  978. X@end example
  979. X
  980. XMost of the symbols there are Emacs things you don't need to worry
  981. Xabout, but the @samp{12} and the @samp{Deg} are mode indicators.
  982. XThe @samp{12} means that calculations should always be carried to
  983. X12 significant figures.  That is why, when we type @kbd{1 @key{RET} 7 /},
  984. Xwe get @samp{0.142857142857} with exactly 12 digits, not counting
  985. Xleading and trailing zeros.
  986. X
  987. XYou can set the precision to anything you like by pressing @kbd{p},
  988. Xthen entering a suitable number.  Try pressing @kbd{p 30 @key{RET}},
  989. Xthen doing @kbd{1 @key{RET} 7 /} again:
  990. X
  991. X@group
  992. X@example
  993. X1:  0.142857142857
  994. X2:  0.142857142857142857142857142857
  995. X    .
  996. X@end example
  997. X@end group
  998. X
  999. XAlthough the precision can be set arbitrarily high, Calc always
  1000. Xhas to have @emph{some} value for the current precision.  After
  1001. Xall, the true value @samp{1/7} is an infinitely repeating decimal;
  1002. XCalc has to stop somewhere.
  1003. X
  1004. XOf course, calculations are slower the more digits you request.
  1005. XPress @kbd{p 12} to set the precision back down to the default.
  1006. X
  1007. XCalculations always use the current precision.  For example, even
  1008. Xthough we have a 30-digit value for @samp{1/7} on the stack, if
  1009. Xwe use it in a calculation in 12-digit mode, it will be rounded
  1010. Xdown to 12 digits before it is used.  Try it; press @key{RET} to
  1011. Xduplicate the number, then @kbd{1 +}.  Notice that the @key{RET}
  1012. Xkey didn't round the number, because it doesn't do any calculation.
  1013. XBut the instant we pressed @kbd{+}, the number was rounded down.
  1014. X
  1015. X@group
  1016. X@example
  1017. X1:  0.142857142857
  1018. X2:  0.142857142857142857142857142857
  1019. X3:  1.14285714286
  1020. X    .
  1021. X@end example
  1022. X@end group
  1023. X
  1024. XIn fact, since we added a digit on the left, we had to lose one
  1025. Xdigit on the right from even the 12-digit value of @samp{1/7}.
  1026. X
  1027. XHow did we get more than 12 digits when we computed @samp{2^3^4}?  The
  1028. Xanswer is that Calc makes a distinction between @dfn{integers} and
  1029. X@dfn{floating-point} numbers, or @dfn{floats}.  An integer is a number
  1030. Xthat does not contain a decimal point.  There is no such thing as an
  1031. X``infinitely repeating fraction integer,'' so Calc doesn't have to limit
  1032. Xitself.  If you asked for @kbd{2^10000} (don't try this!), you would
  1033. Xhave to wait a long time but you would eventually get an exact answer.
  1034. XIf you ask for @samp{2.^10000}, you will quickly get an answer which is
  1035. Xcorrect only to 12 places.  The decimal point tells Calc that it should
  1036. Xuse floating-point arithmetic to get the answer, not exact integer
  1037. Xarithmetic.
  1038. X
  1039. XLet's try entering that last calculation:
  1040. X
  1041. X@group
  1042. X@example
  1043. X1:  2.         2:  2.         1:  1.99506311689e3010
  1044. X    .          1:  10000          .
  1045. X                   .
  1046. X
  1047. X  2.0 RET          10000 RET      ^
  1048. X@end example
  1049. X@end group
  1050. X
  1051. XNotice the letter @kbd{e} in there.  It represents ``times ten to the
  1052. Xpower of,'' and is used by Calc automatically whenever writing the
  1053. Xnumber out fully would introduce more extra zeros than you probably
  1054. Xwant to see.  You can enter numbers in this notation, too.
  1055. X
  1056. X@group
  1057. X@example
  1058. X1:  2.         2:  2.         1:  1.99506311678e3010
  1059. X    .          1:  10000.         .
  1060. X                   .
  1061. X
  1062. X  2. RET           1e4 RET        ^
  1063. X@end example
  1064. X@end group
  1065. X
  1066. XHey, the answer is different!  Look closely at the middle columns
  1067. Xof the two examples.  In the first, the stack contained the
  1068. Xexact integer @samp{10000}, but in the second it contained
  1069. Xa floating-point value with a decimal point.  When you raise a
  1070. Xnumber to an integer power, Calc uses repeated squaring and
  1071. Xmultiplication to get the answer.  When you use a floating-point
  1072. Xpower, Calc uses logarithms and exponentials.  As you can see,
  1073. Xa slight error crept in during one of these methods.  Which
  1074. Xone should we trust?  Let's raise the precision a bit and find
  1075. Xout:
  1076. X
  1077. X@group
  1078. X@example
  1079. X    .          1:  2.         2:  2.         1:  1.995063116880828e3010
  1080. X                   .          1:  10000.         .
  1081. X                                  .
  1082. X
  1083. X p 16 RET        2. RET           1e4            ^
  1084. X@end example
  1085. X@end group
  1086. X
  1087. XPresumably, it doesn't matter whether we do this higher-precision
  1088. Xcalculation using an integer or floating-point power, since we
  1089. Xhave added enough ``guard digits'' to trust the first 12 digits
  1090. Xno matter what.  And the verdict is@dots{}  Integer powers were more
  1091. Xaccurate; in fact, the result was only off by one unit in the
  1092. Xlast place.
  1093. X
  1094. XCalc does many of its internal calculations to a slightly higher
  1095. Xprecision, but it doesn't always bump the precision up enough.
  1096. XIn each case, Calc added about two digits of precision during
  1097. Xits calculation and then rounded back down to 12 digits
  1098. Xafterward.  In one case, it was enough; in the the other, it
  1099. Xwasn't.  If you really need @var{x} digits of precision, it
  1100. Xnever hurts to do the calculation with a few extra guard digits.
  1101. X
  1102. XWhat if we want guard digits but don't want to look at them?
  1103. XWe can set the @dfn{float format}.  Calc supports four major
  1104. Xformats for floating-point numbers, called @dfn{normal},
  1105. X@dfn{fixed-point}, @dfn{scientific notation}, and @dfn{engineering
  1106. Xnotation}.  You get them by pressing @kbd{d n}, @kbd{d f},
  1107. X@kbd{d s}, and @kbd{d e}, respectively.  In each case, you can
  1108. Xsupply a numeric prefix argument which says how many digits
  1109. Xshould be displayed.  As an example, put the following numbers
  1110. Xonto the stack, then try some different display modes.  First,
  1111. Xuse @kbd{M-0 DEL} to clear the stack, then enter the four
  1112. Xnumbers shown here:
  1113. X
  1114. X@group
  1115. X@example
  1116. X4:  12345      4:  12345      4:  12345      4:  12345      4:  12345
  1117. X3:  12345.     3:  12300.     3:  1.2345e4   3:  1.23e4     3:  12345.000
  1118. X2:  123.45     2:  123.       2:  1.2345e2   2:  1.23e2     2:  123.450
  1119. X1:  12.345     1:  12.3       1:  1.2345e1   1:  1.23e1     1:  12.345
  1120. X    .              .              .              .              .
  1121. X
  1122. X   d n          M-3 d n          d s          M-3 d s        M-3 d f
  1123. X@end example
  1124. X@end group
  1125. X
  1126. XNotice that when we typed @kbd{M-3 d n}, the numbers were rounded down
  1127. Xto three significant digits, but then when we typed @kbd{d s} all
  1128. Xfive significant figures reappeared.  The float format does not
  1129. Xaffect how numbers are stored, it only affects how they are
  1130. Xdisplayed.  Only the current precision governs the actual rounding
  1131. Xof numbers in the Calculator's memory.
  1132. X
  1133. XEngineering notation, not shown here, is like scientific notation
  1134. Xexcept the exponent (the power-of-ten part) is always adjusted to be
  1135. Xa multiple of three (as in ``kilo,'' ``micro,'' etc.).  As a result
  1136. Xthere will be one, two, or three digits before the decimal point.
  1137. X
  1138. XAlso notice that the integer @samp{12345} was not affected by any
  1139. Xof the float formats.  Integers are integers, and are always
  1140. Xdisplayed exactly.
  1141. X
  1142. XType @kbd{d n} now to return to the normal float format.
  1143. X
  1144. XLarge integers have their own problems.  Let's look back at
  1145. Xthe result of @kbd{2^3^4}.
  1146. X
  1147. X@example
  1148. X2417851639229258349412352
  1149. X@end example
  1150. X
  1151. XQuick---how many digits does this have?  Try typing @kbd{d g}:
  1152. X
  1153. X@example
  1154. X2,417,851,639,229,258,349,412,352
  1155. X@end example
  1156. X
  1157. XNow how many digits does this have?  It's much easier to tell!
  1158. XWe can actually group digits into clumps of any size.  Some
  1159. Xpeople prefer @kbd{M-5 d g}:
  1160. X
  1161. X@example
  1162. X24178,51639,22925,83494,12352
  1163. X@end example
  1164. X
  1165. XLet's see what happens to floating-point numbers when they are grouped.
  1166. XFirst, type @kbd{p 25 @key{RET}} to make sure we have enough precision
  1167. Xto get ourselves into trouble.  Now, type @kbd{1e13 /}:
  1168. X
  1169. X@example
  1170. X24,17851,63922.9258349412352
  1171. X@end example
  1172. X
  1173. XThe integer part is grouped but the fractional part isn't.  Now try
  1174. X@kbd{M-- M-5 d g} (that's meta-minus-sign, meta-five):
  1175. X
  1176. X@example
  1177. X24,17851,63922.92583,49412,352
  1178. X@end example
  1179. X
  1180. XIf you find it hard to tell the decimal point from the commas, try
  1181. Xchanging the grouping character to a space with @kbd{d , @key{SPC}}:
  1182. X
  1183. X@example
  1184. X24 17851 63922.92583 49412 352
  1185. X@end example
  1186. X
  1187. XType @kbd{d , ,} to restore the normal grouping character, then
  1188. X@kbd{d g} again to turn grouping off.  Also, press @kbd{p 12} to
  1189. Xrestore the default precision.
  1190. X
  1191. XPress @kbd{U} enough times to get the original big integer back.
  1192. X(Notice that @kbd{U} does not undo each mode-setting command; if
  1193. Xyou want to undo a mode-setting command, you have to do it yourself.)
  1194. XNow, type @kbd{d r 16 @key{RET}}:
  1195. X
  1196. X@example
  1197. X16#200000000000000000000
  1198. X@end example
  1199. X
  1200. XThe number is now displayed in @dfn{hexadecimal}, or ``base-16'' form.
  1201. XSuddenly it looks pretty simple; this should be no surprise, since we
  1202. Xgot this number by computing a power of two, and 16 is a multiple of 2.
  1203. XIn fact, we can use @kbd{d r 2 @key{RET}} to see it in actual binary
  1204. Xform:
  1205. X
  1206. X@example
  1207. X2#1000000000000000000000000000000000000000000000000000000 @dots{}
  1208. X@end example
  1209. X
  1210. XWe don't have enough space here to show all the zeros!  They won't
  1211. Xall fit on the screen, either, so you will have to use horizontal
  1212. Xscrolling to see them all.  Press @kbd{<} and @kbd{>} to scroll the
  1213. Xstack window left and right by half its width.
  1214. X
  1215. XYou can enter non-decimal numbers using the @kbd{#} symbol, too.
  1216. XLet's see what the hexadecimal number @samp{5FE} looks like in
  1217. Xbinary.  Type @kbd{16#5FE} (the F's can be in upper or lower case).
  1218. XIt will also help to turn grouping on with @kbd{d g}:
  1219. X
  1220. X@example
  1221. X2#101,1111,1110
  1222. X@end example
  1223. X
  1224. XNotice that @kbd{d g} groups by fours by default if the display radix
  1225. Xis binary or hexadecimal, but by threes if it is decimal, octal, or any
  1226. Xother radix.
  1227. X
  1228. XNow let's see that number in decimal; type @kbd{d r 10}:
  1229. X
  1230. X@example
  1231. X1,534
  1232. X@end example
  1233. X
  1234. XNumbers are not @emph{stored} with any particular radix attached.  They're
  1235. Xjust integers; they can be entered in any radix, and are always displayed
  1236. Xin whatever radix you've chosen with @kbd{d r}.  Floating-point numbers
  1237. Xare always entered and displayed in decimal.
  1238. X
  1239. XThe @kbd{m} prefix key has another set of modes, relating to the way
  1240. XCalc interprets your inputs and does computations.  Whereas @kbd{d}-prefix
  1241. Xmodes generally affect the way thing look, @kbd{m}-prefix modes affect
  1242. Xthey way they are actually computed.
  1243. X
  1244. XThe most popular @kbd{m}-prefix mode is the @dfn{angular mode}.  Notice
  1245. Xthe @samp{Deg} indicator in the mode line.  This means that if you use
  1246. Xa command that interprets a number as an angle, it will assume the
  1247. Xangle is measured in degrees.  For example,
  1248. X
  1249. X@group
  1250. X@example
  1251. X1:  45         1:  0.707106781187   1:  0.500000000001    1:  0.5
  1252. X    .              .                    .                     .
  1253. X
  1254. X    45             S                    2 ^                   c 1
  1255. X@end example
  1256. X@end group
  1257. X
  1258. XThe shift-@kbd{S} command computes the sine of an angle.  The sine
  1259. Xof 45 degrees is @samp{sqrt(2)/2}; squaring this yields {2/4 = 0.5}.
  1260. XHowever, there has been a slight roundoff error because the
  1261. Xresentation of @samp{sqrt(2)/2} wasn't exact.  The @kbd{c 1}
  1262. Xcommand is a handy way to clean up numbers in this case; it
  1263. Xtemporarily reduces the precision by one digit while it
  1264. Xre-rounds the number on the top of the stack.
  1265. X
  1266. XTo do this calculation in radians, we would type @kbd{m r} first.
  1267. X(The indicator changes to @samp{Rad}.)  45 degrees corresponds to
  1268. X@samp{pi/4} radians.  To get @samp{pi}, press the @kbd{P} key.  (Once
  1269. Xagain, this is a shifted capital @kbd{P}.  Remember, unshifted
  1270. X@kbd{p} sets the precision.)
  1271. X
  1272. X@group
  1273. X@example
  1274. X1:  3.14159265359   1:  0.785398163398   1:  0.707106781187
  1275. X    .                   .                .
  1276. X                                        
  1277. X    P                   4 /              S
  1278. X@end example
  1279. X@end group
  1280. X
  1281. XLikewise, inverse trigonometric functions generate results in
  1282. Xeither radians or degrees, depending on the current angular mode.
  1283. X
  1284. X@group
  1285. X@example
  1286. X1:  0.707106781187   1:  0.785398163398   1:  45.
  1287. X    .                    .                .
  1288. X                                        
  1289. X    .5 Q        m r      I S      m d     U I S
  1290. X@end example
  1291. X@end group
  1292. X
  1293. XHere we compute the Inverse Sine of @samp{sqrt(0.5)}, first in
  1294. Xradians, then in degrees.
  1295. X
  1296. XUse @kbd{c d} and @kbd{c r} to convert a number from radians to degrees
  1297. Xand vice-versa.
  1298. X
  1299. X@group
  1300. X@example
  1301. X1:  45         1:  0.785398163396   1:  45.
  1302. X    .              .                .
  1303. X
  1304. X    45             c r              c d
  1305. X@end example
  1306. X@end group
  1307. X
  1308. XAnother interesting mode is @dfn{fraction mode}.  Normally,
  1309. Xdividing two integers produces a floating-point result if the
  1310. Xquotient can't be expressed as an exact integer.  Fraction mode
  1311. Xcauses integer division to produce a fraction, i.e., a rational
  1312. Xnumber, instead.
  1313. X
  1314. X@group
  1315. X@example
  1316. X2:  12         1:  1.33333333333    1:  4:3
  1317. X1:  9              .                    .
  1318. X    .
  1319. X
  1320. X 12 RET 9          /          m f       U /
  1321. X@end example
  1322. X@end group
  1323. X
  1324. XIn the first case, we get an approximate floating-point result.
  1325. XIn the second case, we get an exact fractional result.
  1326. X
  1327. XYou can enter a fraction at any time using @kbd{:} notation.
  1328. X(Calc uses @kbd{:} instead of @kbd{/} as the fraction separator
  1329. Xbecause @kbd{/} is already used to divide the top two stack
  1330. Xelements.)  Calculations involving fractions will always
  1331. Xproduce exact fractional results; fraction mode only says
  1332. Xwhat to do when dividing integers.
  1333. X
  1334. X@node Arithmetic Tutorial, Vector/Matrix Tutorial, Basic Tutorial, Tutorial
  1335. X@section Arithmetic Tutorial
  1336. X
  1337. XIn this section, we explore the arithmetic and scientific functions
  1338. Xavailable in the Calculator.
  1339. X
  1340. XThe standard arithmetic commands are @kbd{+}, @kbd{-}, @kbd{*}, @kbd{/},
  1341. Xand @kbd{^}.  Each normally takes two numbers from the top of the stack
  1342. Xand pushes back a result.  The @kbd{n} and @kbd{&} keys perform
  1343. Xchange-sign and reciprocal operations, respectively.
  1344. X
  1345. X@group
  1346. X@example
  1347. X1:  5          1:  0.2        1:  5.         1:  -5.        1:  5.
  1348. X    .              .              .              .              .
  1349. X
  1350. X    5              &              &              n              n
  1351. X@end example
  1352. X@end group
  1353. X
  1354. XYou can apply a ``binary operator'' like @kbd{+} across any number of
  1355. Xstack entries by giving it a numeric prefix.  You can also apply it
  1356. Xpairwise to several stack elements along with the top one if you use
  1357. Xa negative prefix.
  1358. X
  1359. X@group
  1360. X@example
  1361. X3:  2          1:  9          3:  2          4:  2          3:  12
  1362. X2:  3              .          2:  3          3:  3          2:  13
  1363. X1:  4                         1:  4          2:  4          1:  14
  1364. X    .                             .          1:  10             .
  1365. X                                                 .
  1366. X
  1367. X2 RET 3 RET 4     M-3 +           U              10          M-- M-3 +
  1368. X@end example
  1369. X@end group
  1370. X
  1371. XYou can apply a ``unary operator'' like @kbd{&} to the top @var{n}
  1372. Xstack entries with a numeric prefix, too.
  1373. X
  1374. X@group
  1375. X@example
  1376. X3:  2          3:  0.5                3:  0.5
  1377. X2:  3          2:  0.333333333333     2:  3.
  1378. X1:  4          1:  0.25               1:  4.
  1379. X    .              .                      .
  1380. X
  1381. X2 RET 3 RET 4     M-3 &                  M-2 &
  1382. X@end example
  1383. X@end group
  1384. X
  1385. XNotice that the results here are left in floating-point form.
  1386. XWe can convert them back to integers by pressing @kbd{F}, the
  1387. X``floor'' function.  This function rounds down to the next lower
  1388. Xinteger.  There is also @kbd{R}, which rounds to the nearest
  1389. Xinteger.
  1390. X
  1391. X@group
  1392. X@example
  1393. X7:  2.         7:  2          7:  2
  1394. X6:  2.4        6:  2          6:  2
  1395. X5:  2.5        5:  2          5:  3
  1396. X4:  2.6        4:  2          4:  3
  1397. X3:  -2.        3:  -2         3:  -2
  1398. X2:  -2.4       2:  -3         2:  -2
  1399. X1:  -2.6       1:  -3         1:  -3
  1400. X    .              .              .
  1401. X
  1402. X                  M-7 F        U M-7 R
  1403. X@end example
  1404. X@end group
  1405. X
  1406. XSince dividing-and-flooring is such a common operation, Calc
  1407. Xprovides a special command for that purpose, the backslash @kbd{\}.
  1408. XAnother common arithmetic operator is @kbd{%}, which computes the
  1409. Xremainder that would arise from a @kbd{\} operation, i.e., the
  1410. X``modulo'' of two numbers.  For example,
  1411. X
  1412. X@group
  1413. X@example
  1414. X2:  1234       1:  12         2:  1234       1:  34
  1415. X1:  100            .          1:  100            .
  1416. X    .                             .
  1417. X
  1418. X1234 RET 100       \              U              %
  1419. X@end example
  1420. X@end group
  1421. X
  1422. XThese commands actually work for any real numbers, not just integers.
  1423. X
  1424. X@group
  1425. X@example
  1426. X2:  3.1415     1:  3          2:  3.1415     1:  0.1415
  1427. X1:  1              .          1:  1              .
  1428. X    .                             .
  1429. X
  1430. X3.1415 RET 1       \              U              %
  1431. X@end example
  1432. X@end group
  1433. X
  1434. XWe've already seen the @kbd{Q} (square root) and @kbd{S} (sine)
  1435. Xcommands.  Other commands along those lines are @kbd{C} (cosine),
  1436. X@kbd{T} (tangent), @kbd{E} (@samp{e^x}) and @kbd{L} (natural
  1437. Xlogarithm).  These can be modified by the @kbd{I} (inverse) and
  1438. X@kbd{H} (hyperbolic) prefix keys.
  1439. X
  1440. XLet's compute the sine and cosine of an angle, and verify the
  1441. Xidentity @samp{sin(@var{x})^2 + cos(@var{x})^2 = 1}.  We'll
  1442. Xarbitrarily pick -64 degrees as a good value for @var{x}.  With
  1443. Xthe angular mode set to degrees (@kbd{m d}), do:
  1444. X
  1445. X@group
  1446. X@example
  1447. X2:  -64        2:  -64        2:  -0.89879   2:  -0.89879   1:  1.
  1448. X1:  -64        1:  -0.89879   1:  -64        1:  0.43837        .
  1449. X    .              .              .              .
  1450. X
  1451. X 64 n RET RET      S             TAB             C            x hypot
  1452. X@end example
  1453. X@end group
  1454. X
  1455. X(For brevity, we're showing only five digits of the results here.
  1456. XYou can of course do these calculations to any precision you like.)
  1457. X
  1458. XAnother identity is @samp{tan(@var{x}) = sin(@var{x}) / cos(@var{x})}.
  1459. X
  1460. X@group
  1461. X@example
  1462. X2:  -0.89879   1:  -2.0503    1:  -64.
  1463. X1:  0.43837        .              .
  1464. X    .
  1465. X
  1466. X    U              /             I T
  1467. X@end example
  1468. X@end group
  1469. X
  1470. XA physical interpretation of this calculation is that if you move
  1471. X@samp{0.89879} units downward and @samp{0.43837} units to the right,
  1472. SHAR_EOF
  1473. echo "End of part 12"
  1474. echo "File calc.texinfo is continued in part 13"
  1475. echo "13" > s2_seq_.tmp
  1476. exit 0
  1477.